Asynchronous Apex হলো এমন একটি প্রক্রিয়া, যেখানে কোড বা প্রক্রিয়াগুলি অন্য প্রক্রিয়া থেকে স্বাধীনভাবে কাজ করে এবং নির্দিষ্ট সময়ে সম্পন্ন হয়। Asynchronous Apex সাধারণত দীর্ঘমেয়াদী, বৃহৎ ডেটা সেট, এবং জটিল লজিক্যাল কার্যক্রম সম্পন্ন করতে ব্যবহৃত হয়, যা তাৎক্ষণিকভাবে এক্সিকিউট করার প্রয়োজন নেই।
Salesforce-এ Asynchronous Apex-এর মাধ্যমে বড় ডেটাসেট প্রক্রিয়া এবং সময়সাপেক্ষ কার্যক্রম মূল ট্রানজাকশনের বাইরে চালানো সম্ভব হয়, যা প্ল্যাটফর্মের পারফরম্যান্স এবং কার্যক্ষমতা উন্নত করে।
গভর্নর লিমিট মেনে চলা: Synchronous Apex-এর গভর্নর লিমিট বেশ সীমিত, তবে Asynchronous Apex-এ কিছু গভর্নর লিমিট বেশি থাকে। যেমন, Synchronous Apex-এ ৬ এমবি Heap Size ব্যবহার করা যায়, যেখানে Asynchronous Apex-এ ১২ এমবি।
বড় ডেটাসেট প্রক্রিয়াকরণ: বড় ডেটাসেট নিয়ে কাজ করতে হলে Synchronous Apex গভর্নর লিমিট দ্রুত অতিক্রম করে, তাই বড় ডেটাসেট বা দীর্ঘমেয়াদী কাজ Asynchronous Apex ব্যবহার করে সম্পন্ন করা যায়।
টাইম-ইনটেনসিভ প্রসেসিং: দীর্ঘমেয়াদী কাজ, যেমন রিপোর্ট প্রসেসিং, বড় SOQL কুয়েরি, অথবা API কল আউট-এর জন্য Asynchronous Apex ব্যবহার কার্যকরী।
ব্যাকগ্রাউন্ড প্রসেসিং: কিছু প্রক্রিয়া যেমন ডেটা ইন্টিগ্রেশন বা ব্যাকগ্রাউন্ড আপডেট, যা ব্যবহারকারীর তাৎক্ষণিক মনোযোগের প্রয়োজন হয় না, সেগুলি Asynchronous Apex ব্যবহার করে সম্পন্ন করা যায়।
Salesforce-এ কয়েকটি গুরুত্বপূর্ণ Asynchronous Apex রয়েছে, যা বিভিন্ন কার্যক্রম সম্পন্ন করতে ব্যবহৃত হয়। এগুলো হলো:
Future Methods সহজ এবং দ্রুত Async প্রসেসিংয়ের জন্য ব্যবহৃত হয়। যখন কোনো প্রসেসকে Async করতে হয়, তখন সেই মেথডে @future
অ্যানোটেশন যুক্ত করতে হয়। Future মেথড ব্যবহার করে লং রানিং প্রসেস যেমন API কল আউট বা বড় SOQL কুয়েরি চালানো যায়।
apex
Copy code
public class FutureExample {
@future
public static void processFuture() {
// Async লজিক
List<Account> accounts = [SELECT Id, Name FROM Account];
System.debug('Total Accounts: ' + accounts.size());
}
}
@future
মেথড Async প্রসেসিং হিসেবে কাজ করবে এবং তাৎক্ষণিকভাবে মূল প্রসেসে ব্যাঘাত করবে না।Batch Apex ব্যবহার করে বড় ডেটাসেটকে ছোট ছোট ব্যাচে ভাগ করে প্রক্রিয়া করা যায়, যা গভর্নর লিমিট অতিক্রম না করে বড় ডেটাসেট প্রক্রিয়াকরণে সহায়ক। Batch Apex-এ ডেটা এক্সিকিউশন ২০০টি রেকর্ডের ব্যাচে বিভক্ত করে চালানো হয়।
public class BatchExample implements Database.Batchable<SObject> {
public Database.QueryLocator start(Database.BatchableContext BC) {
return Database.getQueryLocator('SELECT Id, Name FROM Account');
}
public void execute(Database.BatchableContext BC, List<SObject> scope) {
for (SObject s : scope) {
Account acc = (Account) s;
acc.Name = acc.Name + ' Updated';
}
update scope;
}
public void finish(Database.BatchableContext BC) {
System.debug('Batch process completed.');
}
}
start
মেথডে SOQL কুয়েরি সংজ্ঞায়িত করা হয়েছে, যা নির্দিষ্ট ডেটা ফিল্টার করে।execute
মেথডে প্রতিটি ব্যাচের ২০০টি রেকর্ড প্রক্রিয়া করা হয়েছে।finish
মেথডে ব্যাচ প্রসেস শেষ হলে একটি বার্তা প্রিন্ট করা হয়েছে।Queueable Apex হলো Future Methods-এর একটি উন্নত সংস্করণ, যা চেইনিং এবং কনস্ট্রাক্টর ব্যবহার করে ডেটা প্রক্রিয়াকরণকে আরও কার্যকর করে। Queueable Apex-এ চেইনড প্রসেস চালানো যায় এবং API কল, SOQL কুয়েরি, DML অপারেশন করা যায়।
public class QueueableExample implements Queueable {
public void execute(QueueableContext context) {
List<Account> accounts = [SELECT Id, Name FROM Account];
for (Account acc : accounts) {
acc.Name = acc.Name + ' Processed';
}
update accounts;
}
}
execute
মেথড Queueable Context-এ Async প্রসেসিং চালাচ্ছে এবং মূল Transaction-কে ব্যাহত করছে না।Scheduled Apex ব্যবহার করে নির্দিষ্ট সময়ে কোনো Apex কোড বা প্রসেস চালানো যায়। এটি একটি শিডিউল অনুযায়ী চলতে পারে, যেমন প্রতিদিন, সপ্তাহে, বা নির্দিষ্ট তারিখে।
public class ScheduledExample implements Schedulable {
public void execute(SchedulableContext sc) {
List<Account> accounts = [SELECT Id, Name FROM Account];
for (Account acc : accounts) {
acc.Name = acc.Name + ' Scheduled';
}
update accounts;
}
}
String cronExp = '0 0 12 * * ?';
System.schedule('Daily Account Update', cronExp, new ScheduledExample());
cronExp
দ্বারা শিডিউল নির্ধারণ করা হয়েছে, যা প্রতিদিন ১২টায় ScheduledExample
ক্লাস চালাবে।গভর্নর লিমিট মেনে বড় প্রসেসিং: Asynchronous Apex গভর্নর লিমিটের সীমার মধ্যে বড় ডেটাসেট প্রক্রিয়া করতে সহায়ক।
ব্যাকগ্রাউন্ড প্রসেসিং সক্ষমতা: ব্যবহারকারীর তাৎক্ষণিক মনোযোগ ছাড়াই বড় প্রসেসিং ব্যাকগ্রাউন্ডে চালানো যায়।
কাস্টম শিডিউলিং: নির্দিষ্ট সময়ে প্রসেস চালানো বা নির্দিষ্ট সময়ের পরে কাজ সম্পন্ন করতে Scheduled Apex ব্যবহার করা যায়।
চেইনিং এবং কনস্ট্রাক্টর ব্যবহার: Queueable Apex-এ একাধিক Async প্রসেস চেইনিং এর মাধ্যমে চালানো যায় এবং কনস্ট্রাক্টরের মাধ্যমে ডেটা প্রেরণ করা যায়।
Governor Limits মনিটর করা: Async Apex-এর জন্য গভর্নর লিমিট জানুন এবং সেই সীমার মধ্যে কোড অপ্টিমাইজ করুন।
Batch Size ছোট রাখা: বড় ডেটাসেট প্রক্রিয়াকরণে Batch Apex ব্যবহার করুন এবং প্রয়োজন অনুযায়ী ব্যাচ সাইজ নির্ধারণ করুন।
চেইনিং এড়িয়ে চলুন (বেশি না): Queueable Apex-এ প্রচুর চেইনিং এড়িয়ে চলুন; এতে গভর্নর লিমিট অতিক্রমের ঝুঁকি থাকে।
Exception Logging: Asynchronous Apex-এ Exception Logging এবং ডিবাগিং যুক্ত করুন, যাতে ত্রুটি সনাক্ত করা সহজ হয়।
Asynchronous Apex Salesforce-এ বড় ও দীর্ঘমেয়াদী কাজ সম্পন্ন করতে সহায়ক, যা গভর্নর লিমিটের মধ্যে কার্যক্রম সম্পন্ন করে। Future Methods, Batch Apex, Queueable Apex, এবং Scheduled Apex-এর মাধ্যমে কার্যক্ষম ও সময়মাফিক প্রক্রিয়াকরণ নিশ্চিত করা যায়। Asynchronous Apex ব্যবহারের মাধ্যমে Salesforce প্ল্যাটফর্মের কার্যক্ষমতা, স্থায়িত্ব এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত হয়।
common.read_more